package com.ziguang.common.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.c3p0.C3p0Plugin;

/**
* 导入到EXCEL
* 类名称：ObjectExcelView.java
* 类描述： 
* @author FH
* 作者单位： 
* 联系方式：
* @version 1.0
 */
public class JfinalExcelView{

    //新增一行就累加  
    private int count = 0;  
  
    /**
     * 
     * @param head
     * @param list
     * @param names
     * @param ou
     */
    public void createExcel(String[] head,List<Record> list, String[] names, OutputStream ou) {  
        // 创建工作薄  
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();  
        // sheet:一张表的简称  
        // row:表里的行  
        // 创建工作薄中的工作表  
        HSSFSheet hssfSheet = hssfWorkbook.createSheet("test");  
        // 创建行  
        HSSFRow row = hssfSheet.createRow(0);  
        // 创建单元格，设置表头 创建列  
        HSSFCell cell = null;  
        hssfSheet.setColumnWidth(14, 15000);
        hssfSheet.setColumnWidth(0, 5000);
        hssfSheet.setColumnWidth(7, 5000);
        hssfSheet.setColumnWidth(8, 5000);
        hssfSheet.setColumnWidth(10, 5000);
        hssfSheet.setColumnWidth(15, 5000);
        hssfSheet.setColumnWidth(16, 5000);
        //便利表头  
        for (int i = 0; i < head.length; i++) {  
            //创建传入进来的表头的个数  
            cell = row.createCell(i);  
            //表头的值就是传入进来的值  
            cell.setCellValue(head[i]);  
  
        }  
        //新增一个行就累加  
//        row = hssfSheet.createRow(++count);  
        Record record = null;  
  
        if (list != null) {  
            //获取所有的记录 有多少条记录就创建多少行  
            for (int i = 0; i < list.size(); i++) {  
                row = hssfSheet.createRow(++count);  
                // 得到所有的行 一个record就代表 一行  
                record = list.get(i);  
                //在有所有的记录基础之上，便利传入进来的表头,再创建N行  
                for (int j = 0; j < names.length; j++) { 
                	
                    cell = row.createCell(j);  
                    //把每一行的记录再次添加到表头下面 如果为空就为 "" 否则就为值  
                    if(j == 3 || j == 4){
                    	cell.setCellValue(record.get(names[j])==null?0:Double.valueOf(record.get(names[j]).toString())); 
                	}else{
                		cell.setCellValue(record.get(names[j])==null?"":record.get(names[j]).toString());  
                	}
                }  
            }  
        }  
        try {  
            hssfWorkbook.write(ou);  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  

}
